/*
 * 
 * 
 * 
 */
package com.hboxs.asl.dao;

import com.hboxs.asl.Page;
import com.hboxs.asl.Pageable;
import com.hboxs.asl.entity.Coupon;
import com.hboxs.asl.entity.Member;

import java.util.List;

/**
 * Dao - 优惠券
 */
public interface CouponDao extends BaseDao<Coupon, Long> {

    /**
     * 查找优惠券分页
     *
     * @param isEnabled  是否启用
     * @param isExchange 是否允许积分兑换
     * @param hasExpired 是否已过期
     * @param pageable   分页信息
     * @return 优惠券分页
     */
    Page<Coupon> findPage(Boolean isEnabled, Boolean isExchange, Boolean hasExpired, Pageable pageable);

    /**
     * 获取被启用且未过期的优惠券列表
     *
     * @return
     */
    List<Coupon> findEnableCoupons();

    /**
     * 获取用户对某一特定优惠券的领取可领取次数
     *
     * @param member
     * @param coupon
     * @return
     */
    Long findReceivableCount4Coupon(Member member, Coupon coupon);

}